home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / alv.sun / alv.lha / src / rasrange.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-08  |  1.4 KB  |  67 lines

  1. #include <stdio.h>
  2. #include "defs.h"
  3.  
  4. har           *progname;
  5. har           *filename;
  6. ixrect        *pr;
  7.  
  8. #ifdef STANDALONE
  9. ain(argc, argv, envp)
  10. #else
  11. asrange_main(argc, argv, envp)
  12. #endif
  13.     int             argc;
  14.     char          **argv;
  15.     char          **envp;
  16. {
  17.     register int    i, j;
  18.     int             pix, bottom, top;
  19.     int             levels;
  20.     colormap_t        colormap;
  21.  
  22.     bottom = top = 0;
  23.     progname = strsave(argv[0]);
  24.     parse_profile(&argc, argv, envp);
  25.  
  26.     while ((gc = getopt(argc, argv, "l:h:")) != EOF)
  27.         switch (gc) {
  28.         case 'l':
  29.             bottom = atoi(optarg);
  30.             break;
  31.         case 'h':
  32.             top = atoi(optarg);
  33.             break;
  34.         case '?':
  35.             errflag++;
  36.             break;
  37.         }
  38.  
  39.     if (errflag)
  40.         error((char *) 0, "Usage: %s: [-l low-val] [-h high-val] [infile] [outfile]\n", progname);
  41.  
  42.     for (stream = 0; optind < argc; stream++, optind++)
  43.         if (stream < 2 && strcmp(argv[optind], "-") != 0)
  44.             if (freopen(argv[optind], mode[stream], f[stream]) == NULL)
  45.                 error("%s %s", PR_IO_ERR_INFILE, argv[optind]);
  46.  
  47.     if ((pr = pr_load(stdin, &colormap)) == NULL)
  48.         error(PR_IO_ERR_RASREAD);
  49.  
  50.     if (bitrestrict)
  51.         levels = calc_max(pr)+1;
  52.     else
  53.         levels = MAXLEVEL(pr->pr_depth);
  54.  
  55.     if (top == 0)
  56.         top = levels;
  57.  
  58.     for (j = 0; j < pr->pr_size.y; j++)
  59.         for (i = 0; i < pr->pr_size.x; i++) {
  60.             pix = (pr_get(pr, i, j) - bottom) * levels / (top - bottom);
  61.             pix = MAX(pix, 0);
  62.             pr_put(pr, i, j, MIN(pix, levels));
  63.         }
  64.  
  65.     pr_dump(pr, stdout, &colormap, RT_STANDARD, 0);
  66. }
  67.